Apache ANT বিল্ড টুলে কন্ডিশনাল বিল্ড এবং লজিক কন্ট্রোল ব্যবহারের মাধ্যমে বিল্ড প্রক্রিয়াটিকে আরও নমনীয় এবং কাস্টমাইজযোগ্য করা যায়। ANT বিভিন্ন ধরনের কন্ডিশনাল এবং লজিকাল কন্ট্রোল প্রদান করে, যেমন if, unless, condition, property, task ইত্যাদি, যা একটি টাস্ক চালানোর জন্য শর্ত নির্ধারণ করতে সাহায্য করে। এই কন্ডিশনাল কন্ট্রোলের মাধ্যমে, আপনি বিভিন্ন পরিস্থিতিতে বিভিন্ন টাস্ক চালাতে পারেন।
if
এবং unless
- কন্ডিশনাল টাস্ক চালানোANT এ if
এবং unless
টাস্ক ট্যাগগুলির মাধ্যমে আপনি একটি টাস্ক বা টার্গেট চালানোর জন্য শর্ত নির্ধারণ করতে পারেন। if
ট্যাগটি শুধুমাত্র তখন কাজ করে যখন নির্দিষ্ট শর্ত সত্য হয় এবং unless
তখন কাজ করে যখন শর্ত মিথ্যা হয়।
if
:if
ট্যাগটি একটি টাস্ক বা টার্গেট চালাবে যদি শর্তটি সত্য হয়।
উদাহরণ:
<target name="compile" if="compile.source">
<javac srcdir="src" destdir="build/classes" />
</target>
<property name="compile.source" value="true" />
এখানে:
compile.source
প্রপার্টি যদি true
থাকে, তাহলে compile
টার্গেটটি রান করবে।unless
:unless
ট্যাগটি একটি টাস্ক বা টার্গেট চালাবে যদি শর্তটি মিথ্যা হয়।
উদাহরণ:
<target name="clean" unless="skip.clean">
<delete dir="build" />
</target>
<property name="skip.clean" value="false" />
এখানে:
skip.clean
প্রপার্টি যদি false
থাকে, তাহলে clean
টার্গেটটি রান করবে।condition
- কন্ডিশনাল টাস্কcondition
ট্যাগটি শর্ত পূর্ণ হলে একটি প্রপার্টি সেট করার জন্য ব্যবহার করা হয়, যা পরে অন্যান্য টাস্ক বা টার্গেটের শর্ত নির্ধারণে ব্যবহার করা হতে পারে। এর মধ্যে বিভিন্ন শর্তযুক্ত টাস্ক যেমন isset
, isnull
, string
ইত্যাদি থাকতে পারে।
isset
কন্ডিশন ব্যবহার করা<target name="check-condition">
<condition property="conditionMet">
<isset property="my.property"/>
</condition>
<echo message="Condition Met: ${conditionMet}" />
</target>
<property name="my.property" value="true"/>
এখানে:
isset
টাস্কটি চেক করে যে my.property
প্রপার্টিটি সেট আছে কি না। যদি সেট থাকে, তাহলে conditionMet
প্রপার্টি true
হবে।property
টাস্কের মাধ্যমে কন্ডিশনাল লজিকproperty
টাস্কটি একটি শর্ত বা ভ্যালু চেক করতে ব্যবহৃত হয়। এটি কন্ডিশনাল লজিকের অংশ হিসেবে কাজ করে এবং প্রপার্টি বা ভ্যালু সেট করার জন্য ব্যবহার করা হয়।
<target name="set-property">
<property name="is.debug" value="true" />
</target>
<target name="compile" if="is.debug">
<echo message="Debug mode is ON" />
</target>
এখানে:
is.debug
প্রপার্টি যদি true
থাকে, তাহলে compile
টার্গেটটি চালানো হবে এবং একটি মেসেজ প্রদর্শন করা হবে।fail
- বিল্ড ব্যর্থ করার জন্য শর্ত নির্ধারণfail
টাস্কটি ব্যবহৃত হয় যখন একটি শর্ত পূর্ণ না হলে বিল্ডটিকে ব্যর্থ করতে হয়। এটি বিভিন্ন ধরনের কন্ডিশনাল লজিকের মধ্যে একটি গুরুত্বপূর্ণ অংশ হিসেবে কাজ করে, যা আপনার বিল্ড ফাইলের মধ্যে ত্রুটি চেক করার সময় সহায়ক হতে পারে।
<target name="check-dependency">
<fail message="Missing dependency!" if="missing.dependency" />
</target>
<property name="missing.dependency" value="true"/>
এখানে:
missing.dependency
প্রপার্টি true
থাকে, তাহলে check-dependency
টার্গেটটি ফেইল হবে এবং একটি ত্রুটি মেসেজ প্রদর্শন করবে।tasks
টাস্কের মাধ্যমে লজিক কন্ট্রোলআপনি ANT এর tasks
টাস্কের মাধ্যমে বিভিন্ন লজিক কন্ট্রোল ব্যবহার করতে পারেন। এই টাস্কটি ব্যবহার করে আপনি একাধিক শর্তের মধ্যে সিদ্ধান্ত নিতে পারবেন এবং একটি টাস্ক বা টার্গেটের উপর নির্ভরশীলতা নির্ধারণ করতে পারবেন।
<target name="run-tasks">
<tasks>
<task if="run.test" name="test" />
<task unless="run.test" name="build" />
</tasks>
</target>
<property name="run.test" value="true"/>
এখানে:
run.test
প্রপার্টি যদি true
থাকে, তাহলে test
টাস্ক রান হবে, অন্যথায় build
টাস্ক রান হবে।parallel
- একাধিক টাস্ক বা টার্গেট সমান্তরালে চালানোANT তে parallel
টাস্কের মাধ্যমে একাধিক টাস্ক সমান্তরালে চালানো যায়। এটি দীর্ঘ বিল্ড প্রসেসে সময় বাঁচাতে সহায়ক হতে পারে।
<target name="run-tests">
<parallel>
<ant target="test1" />
<ant target="test2" />
</parallel>
</target>
এখানে:
test1
এবং test2
টার্গেট দুটি সমান্তরালে চালানো হবে।Apache ANT-এ কন্ডিশনাল বিল্ড এবং লজিক কন্ট্রোল ব্যবহারের মাধ্যমে আপনি আপনার বিল্ড প্রক্রিয়াকে আরও নমনীয় এবং দক্ষ করে তুলতে পারেন। if
, unless
, condition
, property
, fail
, এবং parallel
এর মতো টাস্কগুলি আপনাকে শর্ত অনুযায়ী বিভিন্ন টাস্ক বা টার্গেট চালাতে সহায়তা করে।
Apache ANT এর if
এবং unless
attributes আপনাকে নির্দিষ্ট শর্তে একটি target বা task চালানোর জন্য ব্যবহার করার সুযোগ দেয়। এটি বিশেষভাবে তখন ব্যবহার হয় যখন আপনি কোনও নির্দিষ্ট শর্ত পূর্ণ হলে একটি কাজ চালাতে চান বা না চালাতে চান।
if
Attribute:if
attribute ব্যবহার করে আপনি শর্ত নির্ধারণ করতে পারেন, এবং যদি ওই শর্তটি সত্য হয় (True), তাহলে ANT সেই task বা target চালাবে।
unless
Attribute:unless
attribute ব্যবহার করে আপনি শর্ত নির্ধারণ করতে পারেন, এবং যদি ওই শর্তটি মিথ্যা (False) হয়, তাহলে ANT সেই task বা target চালাবে।
if
এবং unless
Attributes এর ব্যবহার<target name="targetName" if="propertyName">
<!-- Task or commands -->
</target>
<target name="targetName" unless="propertyName">
<!-- Task or commands -->
</target>
if="propertyName"
: যদি propertyName
নামে কোনো প্রপার্টি সেট করা থাকে এবং তার মান true
হয়, তাহলে এই target বা task চালানো হবে।unless="propertyName"
: যদি propertyName
নামে কোনো প্রপার্টি সেট করা না থাকে বা তার মান false
হয়, তখন এই target বা task চালানো হবে।if
এবং unless
Attribute ব্যবহার করে উদাহরণif
Attribute<project name="IfExample" default="compile">
<!-- একটি প্রপার্টি সেট করা -->
<property name="compile" value="true"/>
<!-- এই target শুধুমাত্র compile প্রপার্টি যদি true হয়, তখনই চলবে -->
<target name="compile" if="compile">
<echo message="Compiling the source code..."/>
</target>
</project>
ব্যাখ্যা:
compile
নামে একটি প্রপার্টি তৈরি করা হয়েছে, যার মান true
।compile
target শুধুমাত্র তখনই চালানো হবে, যখন compile
প্রপার্টির মান true
থাকবে।unless
Attribute<project name="UnlessExample" default="compile">
<!-- একটি প্রপার্টি সেট করা -->
<property name="compile" value="false"/>
<!-- এই target শুধুমাত্র compile প্রপার্টি যদি false হয়, তখনই চলবে -->
<target name="compile" unless="compile">
<echo message="Skipping compilation as the compile property is false."/>
</target>
</project>
ব্যাখ্যা:
compile
প্রপার্টির মান false
।compile
target শুধুমাত্র তখনই চালানো হবে, যদি compile
প্রপার্টির মান false
থাকে। অর্থাৎ, এই উদাহরণে কম্পাইলেশন স্কিপ করা হবে।if
এবং unless
একসাথে ব্যবহার:একই target বা task-এ if
এবং unless
attributes একসাথে ব্যবহার করা যেতে পারে, তবে একে অন্যের বিপরীত শর্তের অধীনে ব্যবহার করা হয়।
<project name="IfUnlessExample" default="compile">
<!-- দুটি প্রপার্টি সেট করা -->
<property name="compile" value="true"/>
<property name="skipCompile" value="false"/>
<!-- এই target compile প্রপার্টি যদি true এবং skipCompile প্রপার্টি যদি false হয়, তখনই চলবে -->
<target name="compile" if="compile" unless="skipCompile">
<echo message="Compiling the source code..."/>
</target>
</project>
ব্যাখ্যা:
compile
প্রপার্টির মান true
হবে এবং skipCompile
প্রপার্টির মান false
থাকবে।if
Attribute: একটি task বা target চালানোর জন্য একটি শর্ত পূর্ণ হলে এটি কার্যকর হয়।unless
Attribute: একটি task বা target চালানোর জন্য শর্ত পূর্ণ না হলে এটি কার্যকর হয়।এগুলি ব্যবহারের মাধ্যমে আপনি Apache ANT বিল্ড স্ক্রিপ্টে শর্তযুক্ত কার্যক্রম পরিচালনা করতে পারবেন, যা বিল্ড প্রক্রিয়াকে আরও নমনীয় এবং কার্যকরী করে তোলে।
Apache ANT-এর condition
task একটি শক্তিশালী টুল, যা শর্তাধীন বিবৃতি (conditional statements) বা পরীক্ষা চালানোর জন্য ব্যবহৃত হয়। এটি নির্দিষ্ট শর্ত অনুযায়ী টাস্কগুলি চালানো বা বাদ দেওয়ার জন্য ব্যবহৃত হয়। condition
task এর মাধ্যমে আপনি নির্দিষ্ট শর্ত পূর্ণ হলে বা না হলে বিল্ড টাস্কগুলি চালানোর জন্য লজিক্যাল অপারেশন বা পরীক্ষা করতে পারেন।
condition
Task এর ব্যবহার:condition
task মূলত শর্ত বা পরীক্ষা চালায় এবং ফলস্বরূপ একটি পরিবর্তনশীল (property) সেট করে যা পরে অন্য টাস্কগুলিতে ব্যবহৃত হতে পারে। এটি বিভিন্ন ধরণের শর্ত পরীক্ষা করতে ব্যবহৃত হতে পারে, যেমন:
condition
Task এর ধরন:ANT-এ condition
task এর বিভিন্ন ধরন রয়েছে, যা নিম্নরূপ:
available
- একটি ফাইল বা ডিরেক্টরি আছে কিনা পরীক্ষা করে।if
/ unless
- শর্ত অনুযায়ী টাস্ক চালানো।macrodef
- কাস্টম মাক্রো তৈরি করা, যা পুনরায় ব্যবহারযোগ্য কোড ব্লক তৈরির জন্য ব্যবহৃত হয়।echo
- নির্দিষ্ট বার্তা প্রিন্ট করা শর্তাধীনভাবে।and
, or
, not
- লজিক্যাল অপারেটর ব্যবহার করে শর্ত পরীক্ষার জন্য।available
Task:available
task দিয়ে একটি নির্দিষ্ট ফাইল বা ডিরেক্টরি আছে কিনা পরীক্ষা করা হয় এবং এটি একটি প্রপার্টি সেট করে।
<project name="Condition Example" default="check-file">
<target name="check-file">
<!-- available task ব্যবহার করে ফাইল চেক করা -->
<available file="src/SomeFile.java" property="file.exists"/>
<!-- যদি ফাইলটি থাকে, তবে এটি প্রিন্ট করবে -->
<echo message="The file exists!" if="file.exists"/>
<!-- যদি ফাইলটি না থাকে, তাহলে অন্য বার্তা প্রিন্ট করবে -->
<echo message="The file does not exist!" unless="file.exists"/>
</target>
</project>
এখানে, available
task ফাইলটির উপস্থিতি পরীক্ষা করে এবং এর ফলাফল অনুযায়ী file.exists
প্রপার্টি সেট করে। এরপর, if
এবং unless
টাস্ক ব্যবহার করে শর্ত অনুযায়ী বার্তা প্রিন্ট করা হয়েছে।
if
/ unless
Task:if
এবং unless
টাস্ক ব্যবহার করে আপনি শর্ত অনুযায়ী টাস্ক চালাতে পারেন। এগুলি মূলত একটি প্রপার্টির মান পরীক্ষা করে।
<project name="Condition Example" default="conditional-task">
<target name="conditional-task">
<!-- প্রপার্টি চেক করা -->
<condition property="compile" value="true">
<isset property="source.dir"/>
</condition>
<!-- যদি প্রপার্টি compile সেট করা থাকে, তবে কম্পাইল টাস্ক চালান -->
<echo message="Compiling the project..." if="compile"/>
</target>
</project>
এখানে, isset
ব্যবহার করে একটি প্রপার্টির উপস্থিতি পরীক্ষা করা হয়েছে। যদি source.dir
প্রপার্টি সেট করা থাকে, তবে compile
প্রপার্টি true
হবে এবং echo
টাস্ক চালানো হবে।
macrodef
Task:macrodef
টাস্ক ব্যবহার করে আপনি কাস্টম মাক্রো বা কোড ব্লক তৈরি করতে পারেন যা পুনরায় ব্যবহারযোগ্য। এই মাক্রোটি শর্ত অনুযায়ী ব্যবহার করা যেতে পারে।
<project name="Condition Example" default="execute-macro">
<target name="execute-macro">
<!-- macrodef তৈরি -->
<macrodef name="sayHello">
<attribute name="name"/>
<sequential>
<echo message="Hello, ${name}!"/>
</sequential>
</macrodef>
<!-- মাক্রোটি শর্তানুযায়ী কল করা -->
<sayHello name="John" if="greeting.required"/>
</target>
</project>
এখানে, sayHello
নামক একটি কাস্টম মাক্রো তৈরি করা হয়েছে যা একটি name
অ্যাট্রিবিউট নেয় এবং সেই অনুযায়ী একটি মেসেজ প্রিন্ট করে। শর্তাধীনভাবে মাক্রোটি কল করা হয়েছে, যদি greeting.required
প্রপার্টি সেট করা থাকে।
echo
Task:echo
টাস্ক সাধারণত বার্তা প্রিন্ট করার জন্য ব্যবহৃত হয়। এটি শর্তের উপর ভিত্তি করে বার্তা প্রিন্ট করতে পারে।
<project name="Condition Example" default="echo-message">
<target name="echo-message">
<!-- শর্তানুযায়ী মেসেজ প্রিন্ট করা -->
<echo message="This is a test message" if="test.condition"/>
<echo message="Test condition not met" unless="test.condition"/>
</target>
</project>
এখানে, echo
টাস্ক ব্যবহার করে শর্তানুযায়ী বার্তা প্রিন্ট করা হচ্ছে।
and
/ or
/ not
Task:এগুলি লজিক্যাল অপারেটর যা শর্তগুলির মধ্যে যুক্তি পরীক্ষা করতে ব্যবহৃত হয়।
<project name="Condition Example" default="logical-operations">
<target name="logical-operations">
<condition property="allTestsPassed">
<and>
<isset property="test1.passed"/>
<isset property="test2.passed"/>
</and>
</condition>
<echo message="All tests passed!" if="allTestsPassed"/>
</target>
</project>
এখানে, and
অপারেটর ব্যবহার করে দুটি শর্ত পরীক্ষা করা হয়েছে (যেমন test1.passed
এবং test2.passed
)। যদি উভয় শর্তই পূর্ণ হয়, তাহলে allTestsPassed
প্রপার্টি সেট হবে এবং একটি বার্তা প্রিন্ট হবে।
condition
task ANT-এ শর্তাধীন কার্যকলাপ পরিচালনা করতে ব্যবহৃত হয়।available
, if
, unless
, macrodef
, এবং লজিক্যাল অপারেটর (যেমন and
, or
, not
) সহ বিভিন্ন উপাদান ব্যবহার করে শর্তাধীন টাস্কগুলি পরিচালনা করা যায়।Apache ANT-এ Multiple Build Targets ব্যবহার করা খুবই সহজ এবং এটি অত্যন্ত কার্যকরী যখন আপনি একটি প্রজেক্টের বিভিন্ন বিল্ড স্টেপ বা কাজ সম্পাদন করতে চান। ANT এর target
ট্যাগ ব্যবহার করে আপনি একাধিক টার্গেট তৈরি করতে পারেন, এবং এগুলোকে নির্দিষ্ট অর্ডারে একে অপরের উপর নির্ভরশীল করে সাজাতে পারেন।
Build Targets হল বিশেষ কাজ বা ধাপ যা ANT এর মাধ্যমে সম্পাদন করা হয়। প্রতিটি টার্গেটের মধ্যে একটি নির্দিষ্ট কাজ বা কাজের গুচ্ছ থাকতে পারে, যেমন কোড কম্পাইল করা, টেস্ট চালানো, আর্কাইভ তৈরি করা ইত্যাদি।
যখন একাধিক টার্গেট ব্যবহৃত হয়, তখন একটি টার্গেটের কাজ অন্য একটি টার্গেটের উপর নির্ভর করতে পারে, এবং ANT নিজে থেকেই সেই নির্ভরশীলতাগুলি পরিচালনা করবে।
ধরা যাক, আমাদের একটি প্রজেক্ট আছে যেখানে তিনটি কাজ করতে হবে:
<project name="MyProject" default="package" basedir=".">
<!-- Properties -->
<property name="src.dir" value="src"/>
<property name="build.dir" value="build"/>
<property name="lib.dir" value="lib"/>
<property name="jar.name" value="myproject.jar"/>
<!-- Clean target: Remove old build files -->
<target name="clean">
<delete dir="${build.dir}"/>
</target>
<!-- Compile target: Compile Java source files -->
<target name="compile" depends="clean">
<mkdir dir="${build.dir}"/>
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath>
<pathelement path="${lib.dir}/some-library.jar"/>
</classpath>
</javac>
</target>
<!-- Package target: Create JAR file from compiled classes -->
<target name="package" depends="compile">
<jar destfile="${build.dir}/${jar.name}" basedir="${build.dir}">
<manifest>
<attribute name="Main-Class" value="com.myproject.Main"/>
</manifest>
</jar>
</target>
</project>
<target name="clean">
:build
ডিরেক্টরি মুছে ফেলবে, যা আগের বিল্ডের ফাইলগুলো পরিষ্কার করবে।<target name="compile">
:compile
টার্গেটটি clean
টার্গেটের উপর নির্ভরশীল। অর্থাৎ, compile
টার্গেটটি প্রথমে clean
টার্গেটটি চালাবে (যতক্ষণ না clean
সম্পন্ন হয়), তারপর কোড কম্পাইল করবে।<target name="package">
:package
টার্গেটটি compile
টার্গেটের উপর নির্ভরশীল। এটি প্রথমে compile
টার্গেটটি চালাবে, তারপর কম্পাইল করা ক্লাস ফাইলগুলোকে একটি JAR ফাইলে প্যাকেজ করবে।একটি টার্গেটের মধ্যে depends
অ্যাট্রিবিউট ব্যবহার করে অন্য টার্গেটগুলির উপর নির্ভরশীলতা তৈরি করা হয়। যখন একটি টার্গেটের উপর অন্য একটি টার্গেট নির্ভরশীল থাকে, তখন সেই টার্গেটটি প্রথমে চালানো হবে, এবং শুধুমাত্র নির্ভরশীল টার্গেটটি সফলভাবে সম্পন্ন হলে পরবর্তী টার্গেটটি চালানো হবে।
depends
এর উদাহরণ:<target name="compile" depends="clean">
<!-- Compile Java source files -->
</target>
<target name="package" depends="compile">
<!-- Create JAR file -->
</target>
depends="clean"
: compile
টার্গেটটি clean
টার্গেটের উপর নির্ভরশীল, তাই প্রথমে clean
চলবে।depends="compile"
: package
টার্গেটটি compile
টার্গেটের উপর নির্ভরশীল, অর্থাৎ প্রথমে কোড কম্পাইল হবে, তারপর JAR ফাইল তৈরি হবে।আপনি যখন ANT রান করেন, আপনি একাধিক টার্গেটও নির্দিষ্ট করতে পারেন। ANT টার্গেটগুলি নির্দিষ্ট অর্ডারে চালায়, এবং একটি টার্গেট যদি অন্য একটি টার্গেটের উপর নির্ভরশীল হয়, তবে প্রথমে সেই নির্ভরশীল টার্গেটটি সম্পন্ন হবে।
ant clean compile package
এই কমান্ডটি প্রথমে clean
টার্গেটটি চালাবে, তারপর compile
এবং পরে package
টার্গেটটি চালাবে। যদি আপনি শুধুমাত্র একটি টার্গেট চালাতে চান, যেমন শুধুমাত্র compile
, তাহলে:
ant compile
যদি টার্গেটের মধ্যে নির্ভরশীলতা না থাকে, তবে আপনি একে অপরের সাথে স্বাধীনভাবে টার্গেটগুলো ব্যবহার করতে পারেন। তবে, ANT কাজ করবে নির্দিষ্ট আদেশে টার্গেটগুলো সম্পন্ন করার জন্য।
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<javac srcdir="src" destdir="build"/>
</target>
<target name="test">
<junit>
<classpath>
<pathelement path="build"/>
</classpath>
<test name="TestClass"/>
</junit>
</target>
এখানে clean
, compile
, এবং test
টার্গেটগুলি একে অপরের উপর নির্ভরশীল নয়। আপনি যে কোন টার্গেট আলাদাভাবে চালাতে পারবেন:
ant clean
ant compile
ant test
আপনি একটি ডিফল্ট টার্গেট নির্দিষ্ট করতে পারেন, যা কোনও টার্গেট নাম ছাড়া যখন ANT চালানো হয় তখন স্বয়ংক্রিয়ভাবে রান হবে। ডিফল্ট টার্গেটের নাম default
অ্যাট্রিবিউটে উল্লেখ করা হয়।
<project name="MyProject" default="compile">
<target name="clean">
<delete dir="build"/>
</target>
<target name="compile">
<javac srcdir="src" destdir="build"/>
</target>
</project>
এখানে, যদি আপনি ant
কমান্ডটি চালান, তবে compile
টার্গেটটি ডিফল্টভাবে রান হবে কারণ সেটি default="compile"
হিসেবে নির্দিষ্ট করা হয়েছে।
depends
: একটি টার্গেটের নির্ভরশীলতা সৃষ্টির জন্য depends
অ্যাট্রিবিউট ব্যবহার করা হয়। ANT নির্ভরশীল টার্গেটগুলি স্বয়ংক্রিয়ভাবে রান করে।default
অ্যাট্রিবিউট দিয়ে ডিফল্ট টার্গেট নির্দিষ্ট করা যায়, যা ANT রান করার সময় প্রথমে চালানো হয়।Multiple build targets ব্যবহারের মাধ্যমে আপনি একটি প্রজেক্টের বিল্ড প্রক্রিয়া ভালোভাবে সংহত করতে পারেন এবং কাজগুলোকে আরও নিয়মিত ও কার্যকরভাবে সাজাতে পারেন।
Apache ANT-এ ফাইল বা ডিরেক্টরি চেক করার জন্য কিছু বিশেষ টাস্ক রয়েছে, যেমন available
, fileset
, এবং mkdir
। এই টাস্কগুলো ব্যবহার করে আপনি ফাইল এবং ডিরেক্টরি অস্তিত্ব চেক, তৈরি বা মুছতে পারেন। এখানে বিভিন্ন উদাহরণ দেওয়া হলো কীভাবে এই টাস্কগুলো ব্যবহার করা যায়।
available
টাস্ক ব্যবহার করে ফাইল বা ডিরেক্টরি চেক করাavailable
টাস্ক ব্যবহার করে আপনি চেক করতে পারেন যে নির্দিষ্ট ফাইল বা ডিরেক্টরি বিদ্যমান কি না। এটি একটি বুলিয়ান ভ্যালু ফেরত দেয় যা নির্ধারণ করে যে ফাইল বা ডিরেক্টরি বিদ্যমান কি না।
<project name="CheckFileExistence" default="check-file" basedir=".">
<!-- File to check -->
<property name="file.to.check" value="example.txt"/>
<!-- Target to check file existence -->
<target name="check-file">
<available file="${file.to.check}" property="file.exists"/>
<echo message="File exists: ${file.exists}"/>
</target>
</project>
available
: এই টাস্কের মাধ্যমে example.txt
ফাইলটি চেক করা হচ্ছে। যদি ফাইলটি বিদ্যমান থাকে তবে file.exists
প্রোপার্টি সেট হবে।echo
: ফাইলের অস্তিত্ব সম্পর্কে একটি বার্তা দেখাবে।ant check-file
যদি example.txt
ফাইলটি বিদ্যমান থাকে, তাহলে এটি "File exists: true" প্রদর্শন করবে। অন্যথায়, "File exists: false" প্রদর্শিত হবে।
ডিরেক্টরি অস্তিত্ব চেক করতে available
টাস্ক ব্যবহার করা যায়। ফাইল চেকের মতোই, ডিরেক্টরি চেক করতে একই পদ্ধতি অনুসরণ করা যায়।
<project name="CheckDirectoryExistence" default="check-directory" basedir=".">
<!-- Directory to check -->
<property name="dir.to.check" value="mydir"/>
<!-- Target to check directory existence -->
<target name="check-directory">
<available dir="${dir.to.check}" property="dir.exists"/>
<echo message="Directory exists: ${dir.exists}"/>
</target>
</project>
available
: এখানে mydir
ডিরেক্টরির অস্তিত্ব চেক করা হচ্ছে। যদি ডিরেক্টরি বিদ্যমান থাকে তবে dir.exists
প্রোপার্টি সেট হবে।echo
: ডিরেক্টরির অস্তিত্ব সম্পর্কে বার্তা প্রদর্শিত হবে।ant check-directory
যদি mydir
ডিরেক্টরি বিদ্যমান থাকে, তাহলে এটি "Directory exists: true" প্রদর্শন করবে। অন্যথায়, "Directory exists: false" দেখাবে।
mkdir
টাস্ক ব্যবহার করে আপনি একটি ডিরেক্টরি তৈরি করতে পারেন যদি এটি আগে থেকে না থাকে।
<project name="CreateDirectory" default="create-dir" basedir=".">
<!-- Directory to create -->
<property name="dir.to.create" value="newdir"/>
<!-- Target to create directory -->
<target name="create-dir">
<mkdir dir="${dir.to.create}"/>
<echo message="Directory created: ${dir.to.create}"/>
</target>
</project>
mkdir
: এই টাস্কের মাধ্যমে newdir
নামক একটি ডিরেক্টরি তৈরি করা হবে।echo
: তৈরি হওয়া ডিরেক্টরি সম্পর্কে বার্তা প্রদর্শন করা হবে।ant create-dir
এটি newdir
নামক একটি ডিরেক্টরি তৈরি করবে যদি এটি আগে থেকে না থাকে এবং "Directory created: newdir" বার্তা প্রদর্শন করবে।
delete
টাস্ক ব্যবহার করে আপনি ফাইল বা ডিরেক্টরি মুছে ফেলতে পারেন।
<project name="DeleteFile" default="delete-file" basedir=".">
<!-- File to delete -->
<property name="file.to.delete" value="oldfile.txt"/>
<!-- Target to delete file -->
<target name="delete-file">
<delete file="${file.to.delete}"/>
<echo message="File deleted: ${file.to.delete}"/>
</target>
</project>
delete
: এই টাস্কের মাধ্যমে oldfile.txt
ফাইলটি মুছে ফেলা হবে।echo
: মুছে ফেলা ফাইল সম্পর্কে বার্তা প্রদর্শন করা হবে।ant delete-file
এটি oldfile.txt
ফাইলটি মুছে ফেলবে এবং "File deleted: oldfile.txt" বার্তা প্রদর্শন করবে।
একাধিক ফাইল চেক করতে fileset
টাস্ক ব্যবহার করা যেতে পারে। এই টাস্কটি একটি নির্দিষ্ট প্যাটার্ন বা ডিরেক্টরি থেকে ফাইলগুলো নির্বাচন করতে সাহায্য করে।
<project name="FileSetExample" default="check-files" basedir=".">
<!-- FileSet to check files -->
<fileset dir="src">
<include name="**/*.txt"/>
</fileset>
<!-- Target to echo the file list -->
<target name="check-files">
<echo message="Checking files..."/>
</target>
</project>
fileset
: এই টাস্কের মাধ্যমে src
ডিরেক্টরির সব .txt
ফাইল নির্বাচন করা হচ্ছে।available
টাস্ক ব্যবহার করে আপনি ফাইল বা ডিরেক্টরি চেক করতে পারেন।mkdir
টাস্ক দিয়ে ডিরেক্টরি তৈরি করা যায়।delete
টাস্ক দিয়ে ফাইল বা ডিরেক্টরি মুছে ফেলতে পারবেন।fileset
টাস্ক ব্যবহার করা হয়।এগুলো ব্যবহার করে আপনি Apache ANT দিয়ে ফাইল এবং ডিরেক্টরি নিয়ে বিভিন্ন কাজ সহজে করতে পারবেন।
common.read_more